﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using SistemaCenterQuimPost.Plantillas; //necesario para obtener la fecha del sistema
using SistemaCenterQuimPost.Control; //necesario para validar datos.

namespace SistemaCenterQuimCentral.UI.CentralAdministrador
{
    public partial class frmGestionProveedoresA : SistemaCenterQuimPost.Plantillas.frmPlantillaHijo
    {
        //--------ATRIBUTOS----------------------------------------------------------

        protected DsProveedoresCentral  proveedorDs;     //variables que me permitirán conectarme con la base de datos.
        protected DsProveedoresCentralTableAdapters .ProveedoresTableAdapter  proveedoresTa;

        protected bool refrescarProveedoresDs = true; //La primera vez debe refrescar el UsuarioDataSet
        
        protected string estFormulario;

        
        //---------CONSTRUCTORES------------------------------------------------------
        public frmGestionProveedoresA()
        {
            InitializeComponent();

            proveedorDs = new DsProveedoresCentral();          //se inicializan las variables que me permiten conectarme a la base de dato.
            proveedoresTa = new DsProveedoresCentralTableAdapters.ProveedoresTableAdapter();

            estFormulario = "";
        
        }
        
        
        //---------ESTADOS------------------------------------------------------------

        private void frmGestionProveedores_Load(object sender, EventArgs e)
        {
            this.estEsperandoOperacion();
        }
        
        //permite redefinir en el padre.
        protected virtual void estEsperandoOperacion()
        {
            cargarGrillaProveedores();  //se cargan los proveedores si existieran
            cargarComboProveedores();

            if (dgvProveedores.RowCount == 0)  //si no existieran proveedores se deja en este estado
            {
                System.Windows.Forms.Control[] controlesHabilitados = {this.btnAgregar};
                System.Windows.Forms.Control[] controlesDeshabilitados = {this.dgvProveedores,this.btnEditar,this.btnEliminar, this.btnProcesar };
                System.Windows.Forms.Control[] controlesVisibles = { };
                System.Windows.Forms.Control[] controlesInvisibles = { this.lblNombre, this.txtNombre, this.lblObligNombre, this.lblCuit, this.txtCuit, this.lblTipo, this.cboTipo, this.lblTel1, this.txtTel1, this.lblTel2, this.txtTel2, this.lblCel1, this.txtCel1, this.lblCel2, this.txtCel2, lblProvincia, this.txtProvincia, this.lblDireccion, this.txtDireccion, this.lblEmail, this.txtEmail, this.lblNota, this.txtNota, this.lblWeb, this.txtWeb, lblError };
                
                habilitarControles(controlesHabilitados);
                deshabilitarControles(controlesDeshabilitados);
                visibleControles(controlesVisibles);
                invisibleControles(controlesInvisibles);

            }else //si existe al menos un proveedor se deja en este otro estado
            {
                System.Windows.Forms.Control[] controlesHabilitados = { this.dgvProveedores, this.btnAgregar, this.btnEditar, this.btnEliminar};
                System.Windows.Forms.Control[] controlesDeshabilitados = { this.btnProcesar };
                System.Windows.Forms.Control[] controlesVisibles = { };
                System.Windows.Forms.Control[] controlesInvisibles = { this.lblNombre, this.txtNombre,this.lblObligNombre, this.lblCuit, this.txtCuit, this.lblTipo, this.cboTipo, this.lblTel1, this.txtTel1, this.lblTel2, this.txtTel2, this.lblCel1, this.txtCel1, this.lblCel2, this.txtCel2, lblProvincia, this.txtProvincia, this.lblDireccion, this.txtDireccion, this.lblEmail, this.txtEmail, this.lblNota, this.txtNota, this.lblWeb, this.txtWeb, lblError };

                habilitarControles(controlesHabilitados);
                deshabilitarControles(controlesDeshabilitados);
                visibleControles(controlesVisibles);
                invisibleControles(controlesInvisibles);
            }
            
            errorProvider1.Clear();

            dgvProveedores.Focus();

            estFormulario = "estEsperandoOperacion";
        
        }

      

        protected virtual void estAgregar()
        {

            System.Windows.Forms.Control[] controlesHabilitados = {this.btnAgregar, this.btnProcesar};
            System.Windows.Forms.Control[] controlesDeshabilitados = {this.dgvProveedores, this.btnEditar, this.btnEliminar};
            System.Windows.Forms.Control[] controlesVisibles = { this.lblNombre, this.txtNombre, this.lblObligNombre, this.lblCuit, this.txtCuit, this.lblTipo, this.cboTipo, this.lblTel1, this.txtTel1, this.lblTel2, this.txtTel2, this.lblCel1, this.txtCel1, this.lblCel2, this.txtCel2, lblProvincia, this.txtProvincia, this.lblDireccion, this.txtDireccion, this.lblEmail, this.txtEmail, this.lblNota, this.txtNota, this.lblWeb, this.txtWeb };
            System.Windows.Forms.Control[] controlesInvisibles = {this.lblError};

            habilitarControles(controlesHabilitados);
            deshabilitarControles(controlesDeshabilitados);
            visibleControles(controlesVisibles);
            invisibleControles(controlesInvisibles);

            estFormulario = "estAgregar";

            this.borrarDatos(); //limpia los txt, para el ingreso de nuevos datos.

            txtNombre.Focus();
        }

        protected virtual void estEditar()
        {
            System.Windows.Forms.Control[] controlesHabilitados = { this.btnEditar, this.btnProcesar};
            System.Windows.Forms.Control[] controlesDeshabilitados = { this.dgvProveedores, this.btnAgregar, this.btnEliminar};
            System.Windows.Forms.Control[] controlesVisibles = { this.lblNombre, this.txtNombre, this.lblObligNombre , this.lblCuit, this.txtCuit, this.lblTipo, this.cboTipo, this.lblTel1, this.txtTel1, this.lblTel2, this.txtTel2, this.lblCel1, this.txtCel1, this.lblCel2, this.txtCel2, lblProvincia, this.txtProvincia, this.lblDireccion, this.txtDireccion, this.lblEmail, this.txtEmail, this.lblNota, this.txtNota, this.lblWeb, this.txtWeb};
            System.Windows.Forms.Control[] controlesInvisibles = { this.lblError};


            habilitarControles(controlesHabilitados);
            deshabilitarControles(controlesDeshabilitados);
            visibleControles(controlesVisibles);
            invisibleControles(controlesInvisibles);

            estFormulario = "estEditar";

            //CARGAR TXT CON DATOS DE LA FILA ACTUAL.
            cargarTxt();

            txtNombre.Focus();

        }
        
        //---------METODOS VARIOS-----------------------------------------------------

        protected void borrarDatos() //limpia los datos para que nuevos sean ingresados.
        {
            //Se borran los textBox de ingreso de datos
            this.txtNombre.Text = "";
            this.txtCuit.Text = "";
            this.cboTipo.Text = "";
            this.txtTel1.Text = "";
            this.txtTel2.Text = "";
            this.txtCel1.Text = "";
            this.txtCel2.Text = "";
            this.txtProvincia.Text = "";
            this.txtDireccion.Text = "";
            this.txtEmail.Text = "";
            this.txtNota.Text = "";
            this.txtWeb.Text = "";
        }
        
        protected void cargarGrillaProveedores()
        {
            if (!refrescarProveedoresDs)
            {
                //CARGAR GRILLA CON DATOS. USAR DIRECTAMENTE LOS centerQuimDs y ProveedoresTa;
                llenar_dg();
            }
            else
            {
                try
                {
                    actualizarProveedoresDs();
                    ///CARGAR GRILLA CON DATOS. USAR DIRECTAMENTE LOS UsuarioDs y UsuarioDa;;
                    llenar_dg();
                }

                catch (IndexOutOfRangeException)
                {
                    //Se informe que no se encontró nada porque el argumento de busqueda esta fuera del rango.
                    MessageBox.Show("Su consulta no ha arrojado resultados.", "INFORME", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    //Si llega a ocurrir algún error grave se cierra el formulario
                    this.Close();
                }
                catch (Exception ex)
                {
                    //Por cualquier otra excepcion se informa el error, en este caso es un error grave.
                    MessageBox.Show("La conexión a la base de datos no fué exitosa./n/n Comuniquese con su desarrollador para solucionar el problema/n/n" + ex.Message, "ERROR GRAVE - ACCESO A BASE DE DATO", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    //Si llega a ocurrir algún error grave se cierra el formulario 
                    this.Close();
                }
            }
        }

        private void actualizarProveedoresDs()  //actualiza la tabla de Proveedores, para de esta manera pueda mostrar información válida.
        {
            //ACTUALIZAR EL ATRIBUTO ProveedoresDs
            //ProveedoresTa.FillByProductos1(...);
            proveedoresTa.FillByVigente(proveedorDs .Proveedores );

            refrescarProveedoresDs = false;

        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (estFormulario == "estEsperandoOperacion")
            {
                estAgregar();
            }
            else
            {
                estEsperandoOperacion();
            }
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            if (estFormulario == "estEsperandoOperacion")
            {
                estEditar();
            }
            else
            {
                estEsperandoOperacion();
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            string nombreProveedorActual = "";
            //nombreProveedorActual = NOMBRE PROVEEDOR DE LA FILA ACTUAL;
            nombreProveedorActual = dgvProveedores.Rows[dgvProveedores.CurrentRow.Index].Cells[0].Value.ToString();

            DialogResult result = MessageBox.Show("¿Desea eliminar el proveedor: " + nombreProveedorActual + "?", "CONFIRMACION", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (result == DialogResult.Yes)
            {
                try
                {

                    //SE ELIMINA EL PROVEEDOR DE LA FILA ACTUAL. ELIMINACION LOGICA
                    proveedoresTa.UpdateQueryEliminarProveedor(false, dgvProveedores.Rows[dgvProveedores.CurrentRow.Index].Cells[0].Value.ToString());

                    MessageBox.Show("El proveedor: " + nombreProveedorActual + ", fué eliminado con exito.", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    refrescarProveedoresDs = true;

                    estEsperandoOperacion();
                }

                catch (IndexOutOfRangeException)
                {
                    //Se informe que no se encontró nada porque el argumento de busqueda esta fuera del rango.
                    MessageBox.Show("Su consulta no ha arrojado resultados.", "INFORME", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    //Si llega a ocurrir algún error grave se cierra el formulario
                    this.Close();
                }
                catch (Exception ex)
                {
                    //Por cualquier otra excepcion se informa el error, en este caso es un error grave.
                    MessageBox.Show("La conexión a la base de datos no fué exitosa./n/n Comuniquese con su desarrollador para solucionar el problema/n/n" + ex.Message, "ERROR GRAVE - ACCESO A BASE DE DATO", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    //Si llega a ocurrir algún error grave se cierra el formulario 
                    this.Close();
                }

            }
            
        }

        private void btnProcesar_Click(object sender, EventArgs e)
        {
            procesar();
        }

        private void procesar() //Lo encapsule en un método así se lo puede llamar cuando se presiona Enter sobre los textBox
        {
            if ((!btnEditar.Enabled) & (!btnEliminar.Enabled)) //estado agregar
            {
                if (formularioValido())
                {
                    agregarProveedor();
                }
                else
                {
                    informarExistenciaError();
                }

            }
            else  //estado editar
            {
                if (formularioValido())
                {
                    editarProveedor();
                }
                else
                {
                    informarExistenciaError();
                }
            }
        }

        private void agregarProveedor()
        {
            DialogResult result = MessageBox.Show("¿Está seguro en ingresar el nuevo proveedor?.", "CONFIRMACION INGRESO DE PROVEEDOR", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (result == DialogResult.Yes)
            {
                try
                {
                    //CONSULTA DE INSERT, A LOS DATOS DE TIPO STRING SE LE SACA LOS ESPACIOS BLANCOS AL PRINICIPIO Y FINAL, LUEGO SE CONVIERTE A MAYUSCULA.
                    //adaptadorProveedores.Insert(txtNombreUsuario.Text.Trim().toUpper()),...,...,)

                    proveedoresTa.InsertQueryProveedor (txtNombre.Text.Trim().ToUpper(), cboTipo.Text.Trim().ToUpper(), txtCuit.Text.Trim().ToUpper(), txtProvincia.Text.Trim().ToUpper(), txtDireccion.Text.Trim().ToUpper(), txtTel1.Text.Trim().ToUpper(), txtTel2.Text.Trim().ToUpper(), txtCel1.Text.Trim().ToUpper(), txtCel2.Text.Trim().ToUpper(), txtEmail.Text.Trim().ToUpper(), "", txtWeb.Text.Trim().ToUpper(), txtNota.Text.Trim().ToUpper(),true);
                    
                    //Se muestra un mje de confirmación.
                    MessageBox.Show("Proveedor ingresado con exito!!!", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);


                    refrescarProveedoresDs = true; //Se hizo una modificación a la base de datos.

                    estEsperandoOperacion(); //Luego de insertar un usuario se vuelve al estado esperando operación
                }

                catch (IndexOutOfRangeException)
                {
                    //Se informe que no se encontró nada porque el argumento de busqueda esta fuera del rango.
                    MessageBox.Show("Su consulta no ha arrojado resultados.", "INFORME", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    //Si llega a ocurrir algún error en estado agregar
                    estEsperandoOperacion();
                }
                catch (Exception ex)
                {
                    //Por cualquier otra excepcion se informa el error, en este caso es un error grave.
                    MessageBox.Show("La conexión a la base de datos no fué exitosa. /n /n Comuniquese con su desarrollador para solucionar el problema /n /n" + ex.Message, "ERROR GRAVE - ACCESO A BASE DE DATO", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    //Si llega a ocurrir algún error en estado agregar 
                    this.estEsperandoOperacion();
                }

            }
        }

        private void editarProveedor()
        {
            DialogResult result = MessageBox.Show("¿Los datos del proveedor serán modificados, desea continuar?.", "CONFIRMACION EDICION DE PROVEEDOR", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (result == DialogResult.Yes)
            {
                try
                {
                    //Consulta de UPDATE,  A LOS DATOS DE TIPO STRING SE LE SACA LOS ESPACIOS BLANCOS AL PRINICIPIO Y FINAL, LUEGO SE CONVIERTE A MAYUSCULA.
                    //adaptadorProveedor.Update(UCase(Trim(txtNombreUsuario.Text)), UCase(Trim(txtDescripcion.Text)), CInt(txtStock.Text), CDbl(txtPrecioCosto.Text), CDbl(txtPrecioVenta.Text), cbPesable.Checked)
                    proveedoresTa.FillByRazon(proveedorDs .Proveedores, dgvProveedores.Rows[dgvProveedores.CurrentRow.Index].Cells[0].Value.ToString());

                    proveedorDs.Proveedores[0].razonSocial = txtNombre.Text.Trim().ToUpper();
                    proveedorDs.Proveedores[0].cuit = txtCuit.Text.Trim().ToUpper();
                    proveedorDs.Proveedores[0].tipo = cboTipo.Text.Trim().ToUpper();
                    proveedorDs.Proveedores[0].tel1 = txtTel1.Text.Trim().ToUpper();
                    proveedorDs.Proveedores[0].tel2 = txtTel2.Text.Trim().ToUpper();
                    proveedorDs.Proveedores[0].cel1 = txtCel1.Text.Trim().ToUpper();
                    proveedorDs.Proveedores[0].cel2 = txtCel2.Text.Trim().ToUpper();
                    proveedorDs.Proveedores[0].provincia = txtProvincia.Text.Trim().ToUpper();
                    proveedorDs.Proveedores[0].direccion = txtDireccion.Text.Trim().ToUpper();
                    proveedorDs.Proveedores[0].email1 = txtEmail.Text.Trim().ToUpper();
                    proveedorDs.Proveedores[0].email2 = "";
                    proveedorDs.Proveedores[0].nota = txtNota.Text.Trim().ToUpper();
                    proveedorDs.Proveedores[0].web = txtWeb.Text.Trim().ToUpper();


                    proveedoresTa.Update(proveedorDs.Proveedores);

                    //Se muestra un mje de confirmación.
                    MessageBox.Show("Proveedor editado con exito!!!", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);


                    refrescarProveedoresDs = true; //Se hizo una modificación a la base de datos.

                    estEsperandoOperacion(); //Luego de editar un usuario se vuelve al estado esperando operación
                }

                catch (IndexOutOfRangeException)
                {
                    //Se informe que no se encontró nada porque el argumento de busqueda esta fuera del rango.
                    MessageBox.Show("Su consulta no ha arrojado resultados.", "INFORME", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    //Si llega a ocurrir algún error en estado editar
                    estEsperandoOperacion();
                }
                catch (Exception ex)
                {
                    //Por cualquier otra excepcion se informa el error, en este caso es un error grave.
                    MessageBox.Show("La conexión a la base de datos no fué exitosa. /n /n Comuniquese con su desarrollador para solucionar el problema /n /n" + ex.Message, "ERROR GRAVE - ACCESO A BASE DE DATO", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    //Si llega a ocurrir algún error en estado editar 
                    this.estEsperandoOperacion();
                }

            }
        }

        private bool formularioValido()
        {
            validarRazonSocial();

            validarCuit();

            validarTipo();

            validarTel1();

            validarTel2();

            validarCel1();

            validarCel2();

            validarProvincia();

            validarDireccion();

            validarEmail();

            validarNota();

            validarWeb();



            if ((errorProvider1.GetError(txtNombre) == "") && (errorProvider1.GetError(txtCuit) == "") && (errorProvider1.GetError(cboTipo) == "") && (errorProvider1.GetError(txtTel1) == "") && (errorProvider1.GetError(txtTel2) == "") && (errorProvider1.GetError(txtCel1) == "") && (errorProvider1.GetError(txtCel2) == "") && (errorProvider1.GetError(txtProvincia) == "") && (errorProvider1.GetError(txtDireccion) == "") && (errorProvider1.GetError(txtEmail) == "") && (errorProvider1.GetError(txtNota) == "") && (errorProvider1.GetError(txtWeb) == ""))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        private void validarRazonSocial()
        {
            if (txtNombre.Text.Trim() == "")
            {
                errorProvider1.SetError(txtNombre, "Razón Social: el campo se encuentra vacio\n\n");
            }
            else
            {
                errorProvider1.SetError(txtNombre, new ValidarDatos().validarLongitud("Razón Social:", txtNombre.Text, 50));

            }
        }

        private void validarCuit()
        {
            if (txtCuit.Text == "")
            {
                errorProvider1.SetError(txtCuit, "");

            }else
            {
                errorProvider1.SetError(txtCuit, new ValidarDatos().validarLongitud("Cuit:", txtCuit.Text, 13) + new ValidarDatos().validarCuit("Cuit:", txtCuit.Text));

            }
            
        }

        private void validarTipo()
        {
            errorProvider1.SetError(cboTipo, new ValidarDatos().validarLongitud("Tipo:", cboTipo.Text, 50));

        }

        private void validarTel1()
        {
            errorProvider1.SetError(txtTel1, new ValidarDatos().validarLongitud("Tel1:", txtTel1.Text, 20));

        }

        private void validarTel2()
        {
            errorProvider1.SetError(txtTel2, new ValidarDatos().validarLongitud("Tel2:", txtTel2.Text, 20));

        }

        private void validarCel1()
        {
            errorProvider1.SetError(txtCel1, new ValidarDatos().validarLongitud("Cel1:", txtCel1.Text, 20));

        }

        private void validarCel2()
        {
            errorProvider1.SetError(txtCel2, new ValidarDatos().validarLongitud("Cel2:", txtCel2.Text, 20));
        }

        private void validarProvincia()
        {
            errorProvider1.SetError(txtProvincia, new ValidarDatos().validarLongitud("Provincia:", txtProvincia.Text, 30));
        }

        private void validarDireccion()
        {
            errorProvider1.SetError(txtDireccion, new ValidarDatos().validarLongitud("Dirección:", txtDireccion.Text, 100));
        }

        private void validarEmail()
        {
            if (txtEmail.Text == "")
            {
                errorProvider1.SetError(txtEmail, "");

            }else
            {
                errorProvider1.SetError(txtEmail, new ValidarDatos().validarLongitud("E-mail:", txtCel1.Text, 50) + new ValidarDatos().validarMail("E-mail:", txtEmail.Text)); 
            }
           
        }

        private void validarNota()
        {
            errorProvider1.SetError(txtNota, new ValidarDatos().validarLongitud("Nota:", txtNota.Text, 100));
        }

        private void validarWeb()
        {
            errorProvider1.SetError(txtWeb, new ValidarDatos().validarLongitud("Web:", txtWeb.Text, 50));
        }

        private void llenar_dg()//llena el datagride con los datos de la consulta
        {
            dgvProveedores.Rows.Clear();

            for (int i = 0; i < proveedorDs.Proveedores.Rows.Count; i++)
            {
                dgvProveedores.Rows.Add(proveedorDs.Proveedores[i].razonSocial, proveedorDs.Proveedores[i].tipo, proveedorDs.Proveedores[i].cuit, proveedorDs.Proveedores[i].tel1, proveedorDs.Proveedores[i].tel2, proveedorDs.Proveedores[i].cel1, proveedorDs.Proveedores[i].cel2, proveedorDs.Proveedores[i].provincia, proveedorDs.Proveedores[i].direccion, proveedorDs.Proveedores[i].email1, proveedorDs.Proveedores[i].web, proveedorDs.Proveedores[i].nota, proveedorDs.Proveedores[i].codProveedor);
            }
            
        }

        protected void cargarTxt()//carga los txt con los datos de la fila de datagride seleccionada
        {
            proveedoresTa.FillByRazon(proveedorDs.Proveedores, dgvProveedores.Rows[dgvProveedores.CurrentRow.Index].Cells[0].Value.ToString());
            
            this.txtNombre.Text = proveedorDs.Proveedores[0].razonSocial;
            this.txtCuit.Text = proveedorDs.Proveedores[0].cuit;
            this.cboTipo.Text = proveedorDs.Proveedores[0].tipo;
            this.txtTel1.Text = proveedorDs.Proveedores[0].tel1;
            this.txtTel2.Text = proveedorDs.Proveedores[0].tel2;
            this.txtCel1.Text = proveedorDs.Proveedores[0].cel1;
            this.txtCel2.Text = proveedorDs.Proveedores[0].cel2;
            this.txtProvincia.Text = proveedorDs.Proveedores[0].provincia;
            this.txtDireccion.Text = proveedorDs.Proveedores[0].direccion;
            this.txtEmail.Text = proveedorDs.Proveedores[0].email1;
            this.txtNota.Text = proveedorDs.Proveedores[0].nota;
            this.txtWeb.Text = proveedorDs.Proveedores[0].web;

            refrescarProveedoresDs = true; //Se debe refrescar el ProveedoresDs.
        }

        private void presionoEnter(object sender, KeyEventArgs e) //captura el evento KeyDown. En particular cuando se presiona enter.
        {
            if (e.KeyCode == Keys.Enter)
            {
                this.procesar();
            }
        }


        private string obtenerFechaActual()  //Dato necesario para la apertura de una caja.
        {
            frmPlantillaPadre unFrm = (frmPlantillaPadre)this.MdiParent;
            return unFrm.getFechaActual();
        }

        protected void cargarComboProveedores()
        {
            proveedoresTa.FillByVigente(proveedorDs.Proveedores);

            Boolean band;
            for (int i = 0; i < proveedorDs.Proveedores.Rows.Count; i++)
            {
                band = false;
                for (int x = 0; x < cboTipo .Items.Count; x++ )
                {
                    if (proveedorDs.Proveedores[i].tipo == cboTipo.Items[x].ToString())
                    {
                        band = true;
                    }
                }

                if (band == false)
                {
                    cboTipo.Items.Add(proveedorDs.Proveedores[i].tipo);
                }
            }
        }

        protected override void frmPlantillaHijo_KeyPress(object sender, KeyPressEventArgs e)  //En este formulario no se transformar punto por coma, ya que debe ingresarse el mail y web.
        {
            
        }
        
    }
}
